﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

using Urgencias.Controlador;
using Urgencias.Modelo;

namespace Urgencias.Vista
{
    public partial class ModificarMedicoUC : UserControl
    {
        Medico m=new Medico();
        public ModificarMedicoUC()
        {
            InitializeComponent();
        }

        private void rutBox_Leave(object sender, EventArgs e)
        {
            string rut = rutBox.Text;
            validarRut(rut);
        }

        private void validarRut(string rut)
        {
             if (rut != "  .   .   -")
            {
                if (!m.validarDigito(rut))
                {
                    MessageBox.Show(Properties.Resources.ErrorRUT);
                    rutBox.Focus();                    
                }
            }
        }

        private void cancelarBTN_Click(object sender, EventArgs e)
        {
            Principal.Instance.limpiar();
        }

        private void guardarBTN_Click(object sender, EventArgs e)
        {
            string Nombre = nombreTB.Text;
            string ApellidoPaterno = ApPaternoTB.Text;
            string ApellidoMaterno = apMaternoTB.Text;
            DateTime FechaNacimiento = fechaNacimientoDP.Value;

            string Rut = rutBox.Text;
            validarRut(Rut);

            char Sexo;
            if (mascRB.Checked)
                Sexo = 'M';
            else
                Sexo = 'F';

            bool disponibilidad = true;
            string EspecialidadMedico = especialidadCB.Text;

            if (MedicoControlador.Instance.modificarMedico(Rut,EspecialidadMedico,Nombre,ApellidoPaterno,ApellidoMaterno,FechaNacimiento,Sexo,disponibilidad))
            {
                reestablecer();
                MessageBox.Show(Properties.Resources.MedicoIngreso);
            }
            else
                MessageBox.Show(Properties.Resources.MedicoIngresoError);
        }

        public void reestablecer()
        {
            rutBox.ResetText();
            nombreTB.ResetText();
            apMaternoTB.ResetText();
            ApPaternoTB.ResetText();
            telTB.ResetText();            
            dire1TB.ResetText();
            dire2TB.ResetText();
            especialidadCB.SelectedIndex = -1;
            fechaNacimientoDP.Value = DateTime.Today;
        }

        private void IngresarMedicoUC_Load(object sender, EventArgs e)
        {
            foreach(var v in MedicoControlador.Instance.obtenerEspecialidadesMedicas())
            {
                especialidadCB.Items.Add(v);
            }
        }

        private void negarEnabled()
        {
            this.rutBox.Enabled = !this.rutBox.Enabled;
            this.sexoGB.Enabled = !this.sexoGB.Enabled;
            this.nombreTB.Enabled = !this.nombreTB.Enabled;
            this.ApPaternoTB.Enabled = !this.ApPaternoTB.Enabled;
            this.apMaternoTB.Enabled = !this.apMaternoTB.Enabled;
            this.fechaNacimientoDP.Enabled = !this.fechaNacimientoDP.Enabled;
            this.telTB.Enabled = !this.telTB.Enabled;
            this.dire1TB.Enabled = !this.dire1TB.Enabled;
            this.dire2TB.Enabled = !this.dire2TB.Enabled;
            this.especialidadCB.Enabled = !this.especialidadCB.Enabled;
            this.limpiarBTN.Enabled = !this.limpiarBTN.Enabled;
            this.buscarBTN.Enabled = !this.buscarBTN.Enabled;
        }
        
        private void buscarBTN_Click(object sender, EventArgs e)
        {
            m = Controlador.MedicoControlador.Instance.buscarMedico(rutBox.Text);

            if (m==null)
            {
                MessageBox.Show(Properties.Resources.MedicoBError);
                rutBox.ResetText();
                rutBox.Focus();
            }
            else
            {
                negarEnabled();
                this.nombreTB.Text = m.Nombre;
                if(m.Sexo=='M')
                    mascRB.Checked=true;
                else
                    femRB.Checked=true;
                
                this.ApPaternoTB.Text=m.ApellidoPaterno;
                this.apMaternoTB.Text=m.ApellidoMaterno;
                this.fechaNacimientoDP.Value=m.FechaNacimiento;
                //this.telTB.Text=m.Telefono;
                //this.dire1TB.Text=m.Direccion;
                this.especialidadCB.Text = m.EspecialidadMedico;
            }
        }

        private void limpiarBTN_Click(object sender, EventArgs e)
        {
            negarEnabled();
            reestablecer();
            rutBox.ResetText();
        }
    }
}
